package com.raowb.common.util;

import java.util.Date;
import java.util.UUID;

import com.baomidou.mybatisplus.core.toolkit.IdWorker;
/**
 * 
* @Description:ID生成工具
* @author:raowenbiao
* @date 2018年8月23日 下午11:16:47
 */
public class IDUtil {
	private static SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0);
	/**
	 * 生成16位id
	 * @return
	 */
	public static Long getId() {
		return idWorker.nextId();
	}
	
	/**
	 * 生成主键（32位）
	 * 时间戳+UUid前缀
	 * @return
	 */
	public static String getId32() {
		return generateID(System.currentTimeMillis());
	}
	
	/**
	 * 生成主键
	 * 时间戳+机器号+序列号
	 * @return
	 */
	public static Long getSequenceId() {
		return IdWorker.getId();
	}

	/**
	 * 根据指定时间生成主键
	 * 
	 * @param time
	 * @return
	 */
	public static String generateID(long time) {
		String rtnVal = Long.toHexString(time);
		rtnVal += UUID.randomUUID();
		rtnVal = rtnVal.replaceAll("-", "");
		return rtnVal.substring(0, 32);
	}

	/**
	 * 根据ID获取该ID创建的时间
	 * 
	 * @param id
	 * @return
	 */
	public static Date getIDCreateTime(String id) {
		String timeInfo = id.substring(0, 11);
		return new Date(Long.parseLong(timeInfo, 16));
	}
	
	public static void main(String[] args) {
		Long long1 = getId();
		System.out.println(long1);
	}
	
}
